using System;

namespace DNNtc
{
    /// <summary>
    /// This class is used to indicate which UserControls should be in the install package
    /// </summary>
    public class ModuleControlProperties : Attribute
    {
        /// <summary>
        /// Creates a attribute with the right properties to create a control.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <param name="title">The title.</param>
        /// <param name="userControlType">type of the user control.</param>
        /// <param name="helpUrl">The help URL.</param>
        /// <param name="supportsPartialRendering">if set to <c>true</c> [supports partial rendering].</param>
        /// <param name="supportsPopUps">if set to <c>true</c> [supports pop ups].</param>
        public ModuleControlProperties(string key, string title, ControlType userControlType, string helpUrl, bool supportsPartialRendering=false, bool supportsPopUps=false)
        {
            //Intentially left empty
        }
    }

    /// <summary>
    /// Module permission attribute
    /// </summary>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    public class ModulePermission : Attribute
    {
        /// <summary>
        /// Empty Constructor for Intellisense
        /// </summary>
        /// <param name="code">The code.</param>
        /// <param name="key">The key.</param>
        /// <param name="name">The name.</param>
        public ModulePermission(string code, string key, string name)
        {
            //Intentially left empty
        }
    }

    public class BusinessControllerClass : Attribute
    {
        //Intentially left empty
    }

    public class UpgradeEventMessage : Attribute
    {
        public UpgradeEventMessage(string versionList)
        {
            //Intentially left empty
        }
    }

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    public class ModuleDependencies : Attribute
    {
        public ModuleDependencies(ModuleDependency type, string value)
        {
            //Intentially left empty
        }
    }
}